
#pragma once

#ifndef __MSCTRL_FIL_SCHEDULER_ABSTRACT_SCHEDULER_HH__
#define __MSCTRL_FIL_SCHEDULER_ABSTRACT_SCHEDULER_HH__

#include <cinttypes>

#include "fil/nvm/abstract_nvm.hh"
#include "sim/object.hh"

namespace MsCtrl::FIL::Scheduler {

class AbstractScheduler : public Object {
 protected:
  NVM::AbstractNVM *pNVM;

 public:
  AbstractScheduler(ObjectData &o, NVM::AbstractNVM *n) : Object(o), pNVM(n) {}
  virtual ~AbstractScheduler() {}

  /**
   * \brief Submit command
   *
   * \param[in] req Request object
   */
  virtual void submit(Request *req) = 0;
};

}  // namespace MsCtrl::FIL::Scheduler

#endif
